<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>字符串字面量</title>
</head>

<body>
  <script>
    // \n换行符
    let string = 'two\nlines'
    console.log(string);
    let string1 =
      "one\
      long\
      line"
    console.log(string1);
    let string2 =
      `
      你好
      wct
      `
    console.log(string2);

    let string3 = "I'm wct"
    console.log(string3);

    //单引号定界字符串，字符串英文中的单引号需要用反斜杠\转义， \'表示单引号字符
    let string4 = 'I\'m wct'
    console.log(string4);


    let name = 'Hello, world'
    console.log(name.length);
    // indexOf搜索字符串 返回索引位置
    console.log(name.indexOf('l', 3));
    console.log(name.indexOf(','));
    // split分隔符 以分隔符代表索引位置
    console.log(name.split(','));
    // 返回最后一个l的位置
    console.log(name.lastIndexOf('l'));
    // 字符串是否以这些字符开头，返回布尔值
    console.log(name.startsWith('Hell'));
    // 字符串是否以这些字符做结尾的，返回布尔值
    console.log(name.endsWith('ld'));
    // 是否包含子串的部分
    console.log(name.includes('llr'));
    // 归一化
    console.log(name.normalize());
    // 4种Unicode归一化形式：NFD的典型分解，NFC兼容性分解，NFKD标准的分解，标准构成，NFKC兼容性分解、规格构成
    console.log(name.normalize('NFKD'));
    // charCodeAt() 方法可返回指定位置的字符的 Unicode 编码,charCodeA处理不了Unicode扩展编码字符（32位2进制）
    console.log(name.charCodeAt(0));
    // 适用于码点大于16位的情形,JavaScript会认为它们是两个字符,codePointAt会以32位2进制数当作一个来处理
    console.log(name.codePointAt(0));

    // 拼接2次
    console.log(name.repeat(2));

    console.log('\ud83d\udc99');//💙 JavaScript会认为💙是两个字符
    let string5 = '我叫' + '' + name
    console.log(string5);


    // 模板字符串
    // \转义了换行符
    console.log(`\
    \u2718 wct`);

    // 标签化模板字面量
    console.log(`\n`.length);
    console.log('\n'.length);
    // String.raw（）函数返回反引号未经处理的文本，既不会处理任何反斜杠转义，调用函数时没有（），反引号字符``会充当（）
    console.log(String.raw`\n`.length);

  </script>
</body>

</html>